#include <string.h>
#include <stdio.h>
#include <iostream>
#include <unistd.h>
#include "Constantes.h"
#include <libc.h>

using namespace std;


//! La classe Paquet permet de définir un paquet pour notre réseaux.
/*!
 Les paquets dans notre réseaux sont caractérisées par un type, un message que l'on veut envoyer, un date à laquelle on l'a envoyé, une durée de vie, le routeur qui l'envoie, celui qui doit le recevoir et par quel voisin il doit passer.
 */
class Paquet {
    
public:
    //! Le type du paquet.
    int type;
    //! Le message que l'on veut envoyer.
    char * message;
    //! La date à laquelle on a envoyé le paquet.
    char * date;
    //! La durée de vie du paquet.
	int dureeVie;
    //! Le routeur emetteur.
    int routeurEmetteur;
    //! Le routeur voisin par lequel il doit passé.
    int routeurPassage;
    //! Le routeur qui doit le recevoir.
    int routeurRecepteur;
    
    
    //! Contructeur permettant de créer un nouveau paquet avec un type, un message, une durée de vie, un routeur emetteur, un routeur voisin et un routeur qui doit recevoir le paquet.
    /*!
     \param type le type du paquet.
     \param message le message que l'on veut envoyé.
     \param dureeVie la durée de vie du paquet.
     \param routeurEmetteur le routeur qui a envoyé le paquet.
     \param routeurPassage le routeur voisin par lequelle le paquet doit passé.
     \param routeurRecepteur le routeur de destination.
     */
    Paquet(int type, char* message, int routeurEmetteur, int routeurPassage, int routeurRecepteur);
    
    Paquet(int type, char* message, int routeurEmetteur, int routeurPassage, int routeurRecepteur, int dureeVie);
    
    //! Contructeur permettant de créer un nouveau paquet avec un type, une date d'envoie, un routeur emetteur, un coût et un routeur destinataire.
    /*!
     \param type le type du paquet.
     \param date date d'envoie du paquet.
     \param routeurEmetteur le routeur qui a envoyé le paquet.
     \param coutLiaison 
     \param routeurRecepteur le routeur de destination.
     */
	Paquet(int type, char* message, int coutLiaison, int routeurRecepteur);
    
    //! Contructeur permettant de créer un nouveau paquet avec un type.
    /*!
     \param type le type du paquet.
     */
    Paquet(int type);
    
    //! Destructeur de la classe Paquet.
    ~Paquet();
    
    
    //! Décrit la classe Paquet.
    /*!
     \param description la description d'un paquet.
     */
    void toString(char *description);
};